namespace GomuLibrary.IO.DiscImage
{
    using System;

    public class VolumeInfo
    {
        private string _applicationId;
        private string _copyrightFileId;
        private DateTime _creationDate;
        private DateTime _expirationDate;
        private short _logicalBlockSize;
        private DateTime _modificationDate;
        private string _preparerId;
        private string _publisherId;
        private string _standardId;
        private string _systemId;
        private VolumeType _type;
        private byte _version;
        private string _volumeId;
        private int _volumeSequenceNumber;
        private long _volumeSpaceSize;

        internal VolumeInfo(VolumeType t, string stdID, byte ver, string sysID, string volID, long volSpaceSize, int volSeqNum, short logBlckSize, string pubID, string prepID, string appID, string cpyFileIF, DateTime create, DateTime modif, DateTime expir)
        {
            this._type = t;
            this._standardId = stdID;
            this._version = ver;
            this._systemId = sysID;
            this._volumeId = volID;
            this._volumeSpaceSize = volSpaceSize;
            this._volumeSequenceNumber = volSeqNum;
            this._logicalBlockSize = logBlckSize;
            this._publisherId = pubID;
            this._preparerId = prepID;
            this._applicationId = appID;
            this._copyrightFileId = cpyFileIF;
            this._creationDate = create;
            this._modificationDate = modif;
            this._expirationDate = expir;
        }

        public string ApplicationId =>
            this._applicationId;

        public string CopyrightFileID =>
            this._copyrightFileId;

        public DateTime CreationDate =>
            this._creationDate;

        public DateTime ExpirationDate =>
            this._expirationDate;

        public short LogicalBlockSize =>
            this._logicalBlockSize;

        public DateTime ModificationDate =>
            this._modificationDate;

        public string PreparerId =>
            this._preparerId;

        public string PublisherId =>
            this._publisherId;

        public string StandardId =>
            this._standardId;

        public string SystemId =>
            this._systemId;

        public VolumeType Type =>
            this._type;

        public byte Version =>
            this._version;

        public string VolumeId =>
            this._volumeId;

        public int VolumeSequenceNumber =>
            this._volumeSequenceNumber;

        public long VolumeSpaceSize
        {
            get => 
                this._volumeSpaceSize;
            set
            {
                this._volumeSpaceSize = value;
            }
        }
    }
}

